

    // pub fn move_zeros(nums: &mut Vec<i32>)
    // {
    //     let mut i = 0;

    //     for j in 0..nums.len(){
    //         if nums[j] != 0{
    //             nums[i] = nums[j];
    //             i += 1;
    //         }
            
    //     }

    //     for k in i..nums.len(){
    //         nums[k] = 0;
    //     }

    // }

    // pub fn plus_one(mut digits: Vec<i32>)->Vec<i32>
    // {
    //     let mut i = digits.len() - 1;

    //     loop {
    //         // 当 最后一位的数字非9，则加一 返回
    //         if digits[i] < 9{
    //             digits[i] += 1;
    //             return  digits;
    //         }

    //         // 当最后一位是9，则清零，然后进位（i-1）直到遇到非9的位
    //         digits[i] = 0;

    //         if i > 0
    //         {
    //             i -= 1;
    //         }
    //         else if i == 0 
    //         {
    //             // 当所有的位都为9，则退出循环，重建一个数组，把最高位设为1，其他位设为0
    //             break;
    //         }

    //     }

    //     digits = vec![0;digits.len()+1];
    //     digits[0] = 1;
    //     return  digits;
        
    // }

    // pub fn plus_one_by_mut_impl(digits: &mut Vec<i32>) -> &mut Vec<i32> {
    //     let n = digits.len();
        
    //     // 从最后一位开始处理
    //     for i in (0..n).rev() {
    //         if digits[i] < 9 {
    //             // 如果当前位小于9，直接加1并返回
    //             digits[i] += 1;
    //             return digits;
    //         }
    //         // 如果是9，置为0，继续处理前一位
    //         digits[i] = 0;
    //     }
        
    //     // 如果所有位都是9，需要在最前面添加1
    //     digits.insert(0, 1);
        
    //     digits
    // }


    // pub fn remove_duplicates(nums: &mut Vec<i32>) -> i32{
    //     if nums.len() == 0{
    //         return 0;
    //     }

    //     let mut i = 0;

    //     for j in 1..nums.len(){
    //         if nums[i] != nums[j]{
    //             if  j -i >1 {
    //                 nums[i+1] = nums[j];
    //             }
    //             i += 1;
    //         }
    //     }

    //     (i + 1 ) as i32

    // }



struct  SolutionArry;

impl SolutionArry {
    pub fn move_zeros(nums: &mut Vec<i32>)
    {
        let mut i = 0;

        for j in 0..nums.len(){
            if nums[j] != 0{
                nums[i] = nums[j];
                i += 1;
            }
            
        }

        for k in i..nums.len(){
            nums[k] = 0;
        }

    }

    pub fn plus_one(mut digits: Vec<i32>)->Vec<i32>
    {
        let mut i = digits.len() - 1;

        loop {
            // 当 最后一位的数字非9，则加一 返回
            if digits[i] < 9{
                digits[i] += 1;
                return  digits;
            }

            // 当最后一位是9，则清零，然后进位（i-1）直到遇到非9的位
            digits[i] = 0;

            if i > 0
            {
                i -= 1;
            }
            else if i == 0 
            {
                // 当所有的位都为9，则退出循环，重建一个数组，把最高位设为1，其他位设为0
                break;
            }

        }

        digits = vec![0;digits.len()+1];
        digits[0] = 1;
        return  digits;
        
    }

    fn plus_one_by_mut_impl(digits: &mut Vec<i32>) -> &mut Vec<i32> {
        let n = digits.len();
        
        // 从最后一位开始处理
        for i in (0..n).rev() {
            if digits[i] < 9 {
                // 如果当前位小于9，直接加1并返回
                digits[i] += 1;
                return digits;
            }
            // 如果是9，置为0，继续处理前一位
            digits[i] = 0;
        }
        
        // 如果所有位都是9，需要在最前面添加1
        digits.insert(0, 1);
        
        digits
    }


    fn remove_duplicates(nums: &mut Vec<i32>) -> i32{
        if nums.len() == 0{
            return 0;
        }

        let mut i = 0;

        for j in 1..nums.len(){
            if nums[i] != nums[j]{
                if  j -i >1 {
                    nums[i+1] = nums[j];
                }
                i += 1;
            }
        }

        (i + 1 ) as i32

    }
}





pub fn solution_arry_test()
{
    let mut vec1 = vec![2,0,1,0,2,12];
    SolutionArry::move_zeros(&mut vec1);
    print!("move zero: {:?} \n", vec1);

    let  vec2 = vec![2,0,1,0,2,2];
    print!("plus one: {:?} \n", SolutionArry::plus_one(vec2));

    let  mut vec3 = vec![9,9,9];
    print!("plus one by mut impl: {:?} \n", SolutionArry::plus_one_by_mut_impl(&mut vec3));


    let  mut vec4 = vec![1,1,4,4,5,5,9,9,9];
    print!("remove duplicates: nums:{:?} \n",SolutionArry::remove_duplicates(&mut vec4));
    print!("remove duplicates: arry {:?} \n", vec4);
}





